package com.ruoyi.slope.ai.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * AI模型/算法库对象 slope_ai_model_library
 * 
 * @author ruoyi
 * @date 2025-09-05
 */
public class SlopeAiModelLibrary extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 模型唯一标识符 (主键) */
    private String modelId;

    /** 模型名称 */
    @Excel(name = "模型名称")
    private String modelName;

    /** 模型版本 */
    @Excel(name = "模型版本")
    private String modelVersion;

    /** 模型/算法类型 (图像去噪, 目标识别, 位移预测, 路径规划) */
    @Excel(name = "模型/算法类型 (图像去噪, 目标识别, 位移预测, 路径规划)")
    private String modelType;

    /** 功能与用途描述 */
    @Excel(name = "功能与用途描述")
    private String description;

    /** 开发框架 (PyTorch, TensorFlow, Scikit-learn) */
    @Excel(name = "开发框架 (PyTorch, TensorFlow, Scikit-learn)")
    private String framework;

    /** 模型超参数 */
    @Excel(name = "模型超参数")
    private String modelParams;

    /** 模型文件路径（可上传） */
    @Excel(name = "模型文件路径", readConverterExp = "可=上传")
    private String modelFilePath;

    /** 模型状态 (已训练, 训练中, 待部署, 已归档, 优化中) */
    @Excel(name = "模型状态 (已训练, 训练中, 待部署, 已归档, 优化中)")
    private String status;

    /** 性能指标 (测试集) */
    @Excel(name = "性能指标 (测试集)")
    private String performanceMetrics;

    /** 创建/训练者 */
    @Excel(name = "创建/训练者")
    private String creator;

    /** 创建/更新日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建/更新日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date creationDate;

    public void setModelId(String modelId) 
    {
        this.modelId = modelId;
    }

    public String getModelId() 
    {
        return modelId;
    }

    public void setModelName(String modelName) 
    {
        this.modelName = modelName;
    }

    public String getModelName() 
    {
        return modelName;
    }

    public void setModelVersion(String modelVersion) 
    {
        this.modelVersion = modelVersion;
    }

    public String getModelVersion() 
    {
        return modelVersion;
    }

    public void setModelType(String modelType) 
    {
        this.modelType = modelType;
    }

    public String getModelType() 
    {
        return modelType;
    }

    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }

    public void setFramework(String framework) 
    {
        this.framework = framework;
    }

    public String getFramework() 
    {
        return framework;
    }

    public void setModelParams(String modelParams) 
    {
        this.modelParams = modelParams;
    }

    public String getModelParams() 
    {
        return modelParams;
    }

    public void setModelFilePath(String modelFilePath) 
    {
        this.modelFilePath = modelFilePath;
    }

    public String getModelFilePath() 
    {
        return modelFilePath;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setPerformanceMetrics(String performanceMetrics) 
    {
        this.performanceMetrics = performanceMetrics;
    }

    public String getPerformanceMetrics() 
    {
        return performanceMetrics;
    }

    public void setCreator(String creator) 
    {
        this.creator = creator;
    }

    public String getCreator() 
    {
        return creator;
    }

    public void setCreationDate(Date creationDate) 
    {
        this.creationDate = creationDate;
    }

    public Date getCreationDate() 
    {
        return creationDate;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("modelId", getModelId())
            .append("modelName", getModelName())
            .append("modelVersion", getModelVersion())
            .append("modelType", getModelType())
            .append("description", getDescription())
            .append("framework", getFramework())
            .append("modelParams", getModelParams())
            .append("modelFilePath", getModelFilePath())
            .append("status", getStatus())
            .append("performanceMetrics", getPerformanceMetrics())
            .append("creator", getCreator())
            .append("creationDate", getCreationDate())
            .toString();
    }
}
